/** @type {import('knex').Knex} */

exports.up = function(knex) {
  return Promise.all([
    // 角色信息表
    knex.schema.createTable('n1790_5kjztnmv4cajsmm8agcz7x_role_info', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.string('角色名称').nullable().comment('角色的名称');
      table.json('菜单IDs').nullable().comment('关联的菜单ID列表');
      table.integer('是否禁用').nullable().comment('是否被禁用');
      table.integer('是否删除').nullable().comment('是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 知识库信息表
    knex.schema.createTable('n1790_5mii8trfri_know_info', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.string('文章标题').nullable().comment('文章的标题');
      table.string('文章标签').nullable().comment('文章的标签');
      table.text('文章内容').nullable().comment('文章的内容');
      table.string('文章作者').nullable().comment('文章的作者');
      table.string('文章分类').nullable().comment('文章的分类');
      table.string('封面图').nullable().comment('文章的封面图片URL');
      table.tinyint('审核状态').defaultTo(0).comment('审核状态');
      table.integer('是否删除').nullable().comment('是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 菜单信息表
    knex.schema.createTable('n1790_6droqmkbhztjqa69g6jnyg_menu_info', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.string('key').nullable().comment('字段键');
      table.string('菜单名称').nullable().comment('菜单的名称');
      table.integer('上级菜单ID').nullable().comment('上级菜单的主键ID');
      table.string('类型').nullable().comment('菜单的类型');
      table.integer('排序').nullable().comment('菜单的排序值');
      table.string('页面路径').nullable().comment('菜单对应的页面路径');
      table.string('接口路径').nullable().comment('菜单对应的接口路径');
      table.integer('是否禁用').nullable().comment('是否被禁用');
      table.integer('是否删除').nullable().comment('是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 员工信息表
    knex.schema.createTable('n1790_eftanpndsqmguvptvszab6_staff_info', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.string('用户名').nullable().comment('用户登录名');
      table.string('手机号').nullable().comment('用户的手机号码');
      table.string('邮箱').nullable().comment('用户的电子邮箱');
      table.string('昵称').nullable().comment('用户的昵称');
      table.string('姓名').nullable().comment('用户的真实姓名');
      table.string('密码').nullable().comment('用户登录密码');
      table.integer('角色ID').nullable().comment('用户的角色ID');
      table.integer('部门ID').nullable().comment('用户所属部门ID');
      table.integer('是否禁用').nullable().comment('用户账号是否被禁用');
      table.integer('是否删除').nullable().comment('用户账号是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 广告信息表
    knex.schema.createTable('n1790_koa1xm2lufu6zajkaephkh_ad_info', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.integer('广告位ID').nullable().comment('广告位的唯一标识');
      table.string('标题').nullable().comment('广告的标题');
      table.string('链接地址').nullable().comment('广告点击后跳转的链接地址');
      table.string('图片地址').nullable().comment('广告展示的图片地址');
      table.integer('排序').nullable().comment('广告的排序值');
      table.integer('是否禁用').nullable().comment('是否被禁用');
      table.integer('是否删除').nullable().comment('是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 资产流转日志表
    knex.schema.createTable('n1790_kwrcsbydkz_zichan_trans_log', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.integer('资产流转').defaultTo(0).comment('资产流转');
      table.integer('资产ID').nullable().comment('资产ID');
      table.string('人员').nullable().comment('人员');
      table.string('部门').nullable().comment('部门');
      table.string('电话').nullable().comment('电话');
      table.text('流转事由').nullable().comment('流转事由');
      table.timestamp('流转时间').nullable().comment('流转时间');
      table.integer('是否禁用').nullable().comment('是否被禁用');
      table.integer('是否删除').nullable().comment('是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 消息信息表
    knex.schema.createTable('n1790_mrtesgeyg8_msg_info', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.string('标题').nullable().comment('广告的标题');
      table.text('消息内容').nullable().comment('消息内容');
      table.integer('是否已读').defaultTo(0).comment('是否已读');
      table.integer('是否删除').defaultTo(0).comment('是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 会员信息表
    knex.schema.createTable('n1790_qts7t2lb3lp5wc8vn4b7ol_member_info', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.string('用户名').nullable().comment('用户登录名');
      table.string('手机号').nullable().comment('用户的手机号码');
      table.string('昵称').nullable().comment('用户的昵称');
      table.string('姓名').nullable().comment('用户的真实姓名');
      table.string('wx_web_openid').nullable().comment('微信网页授权用户的OpenID');
      table.string('wx_mini_openid').nullable().comment('微信小程序用户的OpenID');
      table.string('wework_userid').nullable().comment('企业微信用户的UserID');
      table.string('dingtalk_userid').nullable().comment('钉钉用户的UserID');
      table.string('alipay_userid').nullable().comment('支付宝用户的UserID');
      table.string('密码').nullable().comment('用户账户的密码');
      table.integer('是否禁用').nullable().comment('用户账号是否被禁用');
      table.integer('是否删除').nullable().comment('用户账号是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 资产信息表
    knex.schema.createTable('n1790_r5xnmdhjm4_zichan_info', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.string('资产名称').nullable().comment('资产名称');
      table.integer('设备分类').nullable().comment('设备分类');
      table.integer('归属区域').nullable().comment('归属区域');
      table.string('供应商').nullable().comment('供应商');
      table.string('使用地址').nullable().comment('使用地址');
      table.string('运行情况').nullable().comment('运行情况');
      table.tinyint('是否审核').defaultTo(0).comment('是否审核');
      table.tinyint('审核状态').defaultTo(0).comment('审核状态');
      table.integer('资产状态').defaultTo(0).comment('资产状态');
      table.integer('入库数量').defaultTo(0).comment('入库数量');
      table.timestamp('质保时间').nullable().comment('质保时间');
      table.string('品牌').nullable().comment('品牌');
      table.string('IP地址').nullable().comment('IP地址');
      table.integer('设备状态').defaultTo(0).comment('设备状态');
      table.integer('网络状态').defaultTo(0).comment('网络状态');
      table.integer('丢包率').defaultTo(0).comment('丢包率');
      table.text('图片').nullable().comment('图片');
      table.tinyint('是否备件').defaultTo(0).comment('是否备件');
      table.integer('是否禁用').defaultTo(0).comment('是否被禁用');
      table.integer('是否删除').defaultTo(0).comment('是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // Ping日志表
    knex.schema.createTable('n1790_rakczeriay_ping_log', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.integer('设备ID').nullable().comment('设备ID');
      table.integer('设备状态').nullable().comment('设备状态');
      table.integer('网络状态').nullable().comment('网络状态');
      table.integer('丢包率').nullable().comment('丢包率');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 系统配置表
    knex.schema.createTable('n1790_uctmktsmooyhheh3fiyyya_sysconfig_info', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.string('配置名称').nullable().comment('配置的名称');
      table.string('配置标识').nullable().comment('配置的唯一标识');
      table.integer('保密级别').nullable().comment('配置的保密级别');
      table.string('配置值').nullable().comment('配置的具体值');
      table.integer('是否删除').nullable().comment('是否被删除');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    }),

    // 系统日志表
    knex.schema.createTable('n1790_xifptdewfn_system_log', table => {
      table.increments('_id').unsigned().primary().comment('应用ID，主键，自动递增');
      table.integer('员工ID').nullable().comment('员工ID');
      table.integer('事件ID').nullable().comment('事件ID');
      table.text('操作内容').nullable().comment('操作内容');
      table.timestamp('_create').defaultTo(knex.fn.now()).notNullable().comment('记录创建时间');
      table.timestamp('_update').defaultTo(knex.raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')).notNullable().comment('记录更新时间');
    })
  ]);
};

exports.down = function(knex) {
  return Promise.all([
    knex.schema.dropTable('n1790_5kjztnmv4cajsmm8agcz7x_role_info'),
    knex.schema.dropTable('n1790_5mii8trfri_know_info'),
    knex.schema.dropTable('n1790_6droqmkbhztjqa69g6jnyg_menu_info'),
    knex.schema.dropTable('n1790_eftanpndsqmguvptvszab6_staff_info'),
    knex.schema.dropTable('n1790_koa1xm2lufu6zajkaephkh_ad_info'),
    knex.schema.dropTable('n1790_kwrcsbydkz_zichan_trans_log'),
    knex.schema.dropTable('n1790_mrtesgeyg8_msg_info'),
    knex.schema.dropTable('n1790_qts7t2lb3lp5wc8vn4b7ol_member_info'),
    knex.schema.dropTable('n1790_r5xnmdhjm4_zichan_info'),
    knex.schema.dropTable('n1790_rakczeriay_ping_log'),
    knex.schema.dropTable('n1790_uctmktsmooyhheh3fiyyya_sysconfig_info'),
    knex.schema.dropTable('n1790_xifptdewfn_system_log')
  ]);
}; 